SOURCES=callback.c cbslots.c invoke.c marshall.c type.c boot.c
OBJS=$(SOURCES:.c=.o)
HEADERS=callback.h cbslots.h invoke.h marshall.h type.h boot.h

all:	luainvoke.so	test_loadlib

luainvoke.so:	$(OBJS)
	gcc -shared -Wl,-soname,luainvoke.so -o luainvoke.so $(OBJS) `pkg-config --libs lualib50` -ldl

%.o : %.c $(HEADERS)
	gcc -Wall -fPIC -c $< `pkg-config --cflags lualib50`

cbslots.c : generate_cbslots.lua
	./generate_cbslots.lua > cbslots.c

boot.h : generate_boot.lua boot.lua
	./generate_boot.lua -h > boot.h

boot.c : generate_boot.lua boot.lua
	./generate_boot.lua > boot.c

test_loadlib:
	gcc -o test_loadlib test_loadlib.c -ldl

clean:
	rm -f luainvoke.so test_loadlib $(OBJS)
